package org.egedede.simulation.model;

import java.util.Collection;
import java.util.List;

/**
 * A Simulation is a set of {@link Model}s, {@link Law}s and {@link EndCondition}s.
 * On each model laws are applied until an end condition is met.
 * @author tiaped
 *
 */
public interface Simulation {
	
	/**
	 * Returns simulation's {@link Model}s
	 * @return
	 * 		simulation models
	 */
	public Model getModel();
	
	/**
	 * Returns simulation's {@link Law}s
	 * @return
	 * 		simulation laws
	 */
	public List<Law> getLaws();

	/**
	 * Returns simulation's {@link EndCondition}s
	 * @return
	 * 		simulation's end conditions
	 */
	public Collection<EndCondition> getEndConditions();
}
